Amazon EMR Studio で Git リポジトリに対してユーザーレベルのアクセス許可をサポートしました
こんにちは、森田です。
以下のアップデートで Amazon EMR Studio で Git リポジトリに対してユーザーレベルのアクセス許可をサポートしました。
本記事では、Git リポジトリに対してユーザーレベルのアクセス許可の手順をご紹介いたします。
やってみる
前提条件
すでに Amazon EMR Studio, EMR Studio Workspace は作成済みとします。
また、Workspaceには、Gitリポジトリもリンク済みとします。
ユーザーレベルのアクセス許可を使用しない場合
EMRのサービスロール
ユーザーレベルのアクセスを制御するのは、EMR Studio サービス ロールで行います。
ユーザーレベルのアクセス許可を利用しない場合は、以下のようなポリシーとなります。
{ "Sid": "AllowSecretsManagerReadOnlyActionsWithEMRTags", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:*:*:secret:*", "Condition": { "StringEquals": { "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true" } } }
Conditionを利用して、for-use-with-amazon-emr-managed-policiesのタグがtrueのシークレットに対してはアクセスができる状態になっております。
また、EMR Studioから作成したGit シークレットには、for-use-with-amazon-emr-managed-policiesのタグがtrueとして設定されます。
よって、以下のように他のユーザが作成したGitシークレットを使うことができてしまいます。
ユーザーレベルのアクセス許可
EMRのサービスロール
今回のアップデートにより、このGitシークレットを作成したユーザのみの利用を許可することができるようになります。
ユーザーレベルのアクセス許可を利用する場合は、以下のようなポリシーとなります。
{ "Sid": "AllowSecretsManagerReadOnlyActionsWithEMRTags", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:*:*:secret:*", "Condition": { "StringEquals": { "secretsmanager:ResourceTag/for-use-with-amazon-emr-managed-user-policies": "${aws:userid}" } } }
こちらでは、先ほどのポリシーとは違い、シークレットのタグに自身のユーザIDが付与されたリソースのみアクセスができる状態になります。
よって、以下のように他のユーザが作成したGitシークレットは使うことができなくなります。
さいごに
今回のアップデートは、複数人で作業する際に嬉しい機能です。
各ユーザのシークレットを使うように強制ができるため、より細かくリポジトリ共有の制御ができるようになります。
既存で EMR Studio を使っている場合でも、手順を踏めば利用できるようになりますので、ぜひチェックしてみてください。